package com.copc.common.model.vo;

import com.copc.common.annotation.Validation;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author: yuanbin
 * @date:Created in 2022/11/9 13:49
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Apply {

    @ApiModelProperty(value = "订单号" )
    @Validation(message = "orderNo不可为空")
    private String orderNo;

    @ApiModelProperty(value = "订单开始时间" )
    private String orderStartDate;

    @ApiModelProperty(value = "订单结束时间" )
    private String orderEndDate;

    @ApiModelProperty(value = "渠道订单号" )
    private String agencyOrderNo;

    @ApiModelProperty(value = "旧保单号" )
    private String oldPolicyCode;

    private String orderType;

    @ApiModelProperty(value = "销售渠道代码" )
    @Validation(message = "channelCode不可为空")
    private String channelCode;

    @ApiModelProperty(value = "渠道流水号" )
    private String agencyTransactionNo;

    @ApiModelProperty(value = "(0/1)新/续保标识" )
    @Validation(message = "otherFlag不可为空")
    private String otherFlag;

    @ApiModelProperty(value = "投保时间" )
    @Validation(message = "applyDate不可为空")
    private String applyDate;

    @ApiModelProperty(value = "保单号" )
    private String policyCode;

    private String proposalNo;

    @ApiModelProperty(value = "支付流水号" )
    private String paySerialNo;

    private String comCode;

    @ApiModelProperty(value = "见费标志" )
    private String jfeeFlag;

    @ApiModelProperty(value = "个团标识" )
    private String multiPolicyFlag = "1" ;

    @ApiModelProperty(value = "险种代码" )
    @Validation(message = "riskCode不可为空")
    private String riskCode;

    @ApiModelProperty(value = "份数" )
    private Integer unit;

    @ApiModelProperty(value = "保额" )
    private BigDecimal amount;

    @ApiModelProperty(value = "总保费" )
    private BigDecimal premium;

    @ApiModelProperty(value = "折扣率" )
    private BigDecimal rate;

    @ApiModelProperty(value = "保单传送方式" )
    @Validation(message = "deliveryType不可为空")
    private Integer deliveryType;

    @ApiModelProperty(value = "寄送地址" )
    private String deliveryAddress;

    @ApiModelProperty(value = "目的地" )
    private String destination;

    @ApiModelProperty(value = "第三方渠道定义的产品代码" )
    private String agencyProductCode;

    @ApiModelProperty(value = "生效开始时间" )
    @Validation(message = "validateStartTime不可为空")
    private String validateStartTime;

    @ApiModelProperty(value = "生效结束时间" )
    @Validation(message = "validateEndTime不可为空")
    private String validateEndTime;

    @ApiModelProperty(value = "支付方式" )
    @Validation(message = "payMode不可为空")
    private Integer payMode;

    @ApiModelProperty(value = "核心系统方案代码" )
    @Validation(message = "insurePackageCode不可为空")
    private String insurePackageCode;

    @ApiModelProperty(value = "行业类别" )
    private String businessKind;

    @ApiModelProperty(value = "占用性质" )
    private String possessNature;

    @ApiModelProperty(value = "劳务派遣" )
    private String isLabor;

    @ApiModelProperty(value = "保单支付状态" )
    private Integer payStatus;

    @ApiModelProperty(value = "国籍" )
    private String nationFlag;

    @ApiModelProperty(value = "工种编号" )
    private String jobCode;

    @ApiModelProperty(value = "工种名称" )
    private String jobName;

    @ApiModelProperty(value = "渠道代码" )
    private String agencyCode;

    @ApiModelProperty(value = "代理渠道代码" )
    private String agentCode;

    @ApiModelProperty(value = "被保人投保员工数" )
    private Integer insuredNum;

    @ApiModelProperty(value = "手续费比率" )
    private BigDecimal disrate;

    @ApiModelProperty(value = "投保省份" )
    @Validation(message = "provinceName不可为空")
    private String provinceName;

    @ApiModelProperty(value = "投保省份编码" )
    @Validation(message = "provinceName不可为空")
    private String provinceCode;

    @ApiModelProperty(value = "投保城市" )
    @Validation(message = "cityName不可为空")
    private String cityName;

    @ApiModelProperty(value = "投保城市编码" )
    @Validation(message = "cityCode不可为空")
    private String cityCode;

    @ApiModelProperty(value = "投保区域" )
    @Validation(message = "districtName不可为空")
    private String districtName;

    @ApiModelProperty(value = "投保区域编码" )
    @Validation(message = "districtCode不可为空")
    private String districtCode;

    /**
     * 投保人信息
     */
    @Validation(message = "applicant不可为空")
    private Applicant applicant;
    /**
     * 被保人信息
     */
    @Validation(message = "insureds不可为空")
    private List<InsuredsVO> insureds;

}
